package com.triones.ljr.service;

import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.page.TableDataInfo;
import com.triones.ljr.entity.bo.PolicyParams;
import com.triones.ljr.entity.dto.IndustryCodeDO;
import com.triones.ljr.entity.dto.PolicyDO;
import com.triones.ljr.entity.dto.PolicyItemDO;
import com.triones.ljr.entity.vo.*;

import java.util.List;

/**
 * 我要获策
 */
public interface PolicyService {

    /**
     * 行业数据
     * @return
     */
    List<IndustryCodeDO> industryTreeList();

    /**
     * 获取列表（分页）
     * @param params
     * @param pageQuery
     * @return
     */
    TableDataInfo<CustomPolicyVO> pageList(PolicyParams params, PageQuery pageQuery);

    /**
     * 新增
     * @param dto
     * @return
     */
    boolean add(PolicyDO dto);

    /**
     * 获取详情
     * @param id
     * @return
     */
    PolicyVO getInfo(Long id);

    /**
     * 修改
     * @param dto
     * @return
     */
    boolean edit(PolicyDO dto);

    /**
     * 政策列表
     * @return
     */
    List<PolicyVO> list();

    /**
     * 新增-政策细则
     * @param dto
     * @return
     */
    boolean addItem(PolicyItemDO dto);

    /**
     * 校验政策细则名称唯一
     * @param dto
     * @return
     */
    boolean checkItemNameUnique(PolicyItemDO dto);

    /**
     * 获取列表（分页）-政策细则
     * @param dto
     * @param pageQuery
     * @return
     */
    TableDataInfo<CustomPolicyItemVO> itemPageList(PolicyItemDO dto, PageQuery pageQuery);

    /**
     * 修改-政策细则
     * @param dto
     * @return
     */
    boolean editItem(PolicyItemDO dto);

    /**
     * 政策细项-获取详情
     * @param id
     * @return
     */
    PolicyItemVO getItemInfo(Long id);

    /**
     * 政策细项-删除
     * @param id
     * @return
     */
    boolean removeItem(Long id);

    /**
     * 删除
     * @param id
     * @return
     */
    boolean remove(Long id);

    /**
     * 根据政策id获取政策细项列表
     * @param pid
     * @return
     */
    List<PolicyItemDO> getItemList(Long pid);

    /**
     * 政策列表（分页）
     * @param params
     * @param pageQuery
     * @return
     */
    TableDataInfo<CustomPolicyVO> apiPageList(PolicyParams params, PageQuery pageQuery);

    /**
     * 获取政策详情
     * @param id
     * @return
     */
    CustomPolicyVO getPolicyDetail(Long id);

    /**
     * 一键申报列表（分页）
     * @param keyword
     * @param pageQuery
     * @return
     */
    TableDataInfo<PolicyItemVO> apiItemPageList(String keyword, PageQuery pageQuery);

    /**
     * 政策细则详情
     * @param id
     * @return
     */
    CustomPolicyItemVO itemDetail(Long id);

    /**
     * 通过行业查询政策列表
     * @param industry
     * @return
     */
    List<CustomPolicyVO> policyListByIndustry(String industry);

    /**
     * 政策已兑换的企业列表
     * @return
     */
    List<CustomDeclareAuditVO> declareAuditList();
}
